Upload HTTPD(apache) log จาก EC2 ไปยัง CloudWatch Log
ในบล็อกนี้จะเป็นการเพิ่มเติมเนื้อหาต่อจากบล็อกก่อนนี้ที่เกี่ยวกับการทำ CloudWatch Log จะเป็นการสร้าง Log group ของ HTTPD(Apache) ครับผม
เริ่มต้น
การที่จะทำตามขั้นตอนในบล็อกนี้ได้จำเป็นต้องทำเนื้อหาในบล็อกแรกนี้ใ้หเสร็จก่อน โดยใครที่ยังไม่ได้ทำ สามารถย้อนกลับไปดูเนื้อหาของบล็อกที่แล้วได้ตามลิ้งค์ด้านล่างนี้ครับ
การสร้าง CloudWatch Log เพื่อใช้งานใน EC2
การติดตั้ง PHP และ Apache
หลังจากที่เราทำตามขั้นตอนในบล็อกข้างต้นก่อนหน้านี้แล้ว ให้เราทำการติดตั้ง https apache ตามขั้นตอนจากลิ้งค์ที่อยู่ด้านล่างนี้ได้เลยครับ
วิธี Install PHP 8.0 and Apache ใน Amazon Linux 2 ของ EC2
หลังจากทำตามขั้นตอนจากบล็อกข้างต้่นแล้ว ให้เราทำการแก้ไขไฟล์ index.html โดยการใช้คำสั่ง
cd /var/www/html/
เพื่อเข้าสู่โฟลเดอร์หลัก
vi index.html
เพื่อเปิดไฟล์และทำการเพิ่มเนื้อหาด้านล่างนี้ลงไป
<html><body>test</body></html>
เพื่อเป็นการทดสอบระบบว่าสามารถเข้าใช้งานหน้าเว็บไซต์ได้ปกติหรือไม่ ถ้าสามารถเข้าใช้งานได้ปกติระบบจะแสดงหน้าเว็บนี้ขึ้นมาดังรูป
http://[Instance public IP address]
ต่อไปเราจะทำการทดสอบ httpd log กันดูว่าสามารถใช้งานได้หรือไม่โดยการรันคำสั่ง
tail -f /var/log/httpd/access_log
หลังจากนั้นให้เราเปิดหน้าเว็บไซต์ของเราและทำการ refresh หน้าเว็บ ถ้าระบบทำงานปกติจะสังเกตว่ามีข้อมูล Log การเข้าใช้งานในหน้าต่าง putty
เมื่อสามารถเข้าใช้งาน httpd log ได้แล้วคราวนี้เราก็จะมาสร้าง log group ของ httpd log ภายใน CloudWatch กันซึ่งเนื้อหาก็จะคล้ายกับบล็อกก่อนหน้านี้ครับ
HTTPD(apache) log นั้นจะมีไฟล์ที่เก็บ log อยู่ 2 ไฟล์จัดเก็บอยู่ในโฟลเดอร์ /var/log/httpd นั้นคือ
ซึ่งในบล็อกนี้เราจะต้องสร้าง log group สำหรับข้อมูลทั้ง 2 ประเภท โดยเริ่มต้นจาก access log เป็นอันดับแรก
การสร้าง log group
คำสั่งสร้าง log group
เริ่มต้นที่คำสั่งในการสร้าง log group ซึ่งจะมีส่วนประกอบทั้งหมดดังนี้ โดยครั้งนี้จะเป็นการสร้าง log group ในส่วนของข้อมูล access log ครับ
Access log
aws logs create-log-group: คือคำสั่งที่ใช้สร้าง log group ใน CloudWatch
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_access_log (กำหนดชื่อ log group ที่เราต้องการ)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs create-log-group --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log"
ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย
จะมีส่วนประกอบของคำสั่งคือ
aws logs put-retention-policy: คือคำสั่งที่ใช้กำหนด retention
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_access_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
--retention-in-days: 30 (กำหนดจำนวนวันที่ต้องการจะให้หมดอายุ)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs put-retention-policy --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log" --retention-in-days 30
ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย
จะมีส่วนประกอบของคำสั่งคือ
aws logs create-log-stream: คือคำสั่งที่ใช้กำหนด retention
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_access_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
--log-stream-name: i-*****************
(ตรงนี้ให้เราใส่ Instance ID ลงไปสามารถดูได้จากหน้า Instance ใน EC2)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs create-log-stream --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log" --log-stream-name i-*****************
เมื่อเรากรอกคำสั่งครบทั้ง 3 อย่างนี้ ให้เราลองเข้าไปดูในส่วนของ Log group ที่อยู่ในหน้า CloudWatch ดูจะเห็นได้ว่าตอนนี้ใน CloudWatch มี log group และ log stream ที่เราได้ส้รางขึ้นมาเรียบร้อยแล้ว
ต่อไปให้เราทำการตั้งค่า config ที่อยู่ในไฟล์ httpd_access_log.conf โดยใช้งานคำสั่งนี้เพื่อเปิดดูข้อมูลไฟล์
vi /etc/awslogs/config/httpd_access_log.conf
จากนั้นให้กดปุ่ม i เพื่อเข้าโหมด insert และทำการใส่ข้อมูลทั้งหมดนี้ลงไป
เมื่อเพิ่มเนื้อหาเสร็จแล้วให้กด esc เพื่อออกจากโหมด insert และพิม :x เพื่อเซฟและออกจากไฟล์
ต่อไปให้ทำการ restart awslog นะครับเพื่ออัพเดทการทำงานของระบบโดยใช้คำสั่ง
systemctl restart awslogsd
Error log
ในส่วนนี้ก็จะเหมือนกับการสร้าง log group ของ access log เช่นกัน เพียงแต่แตกต่างกันในเรื่องของไฟล์ข้อมูลที่เราจะนำมาสร้าง log group ครับ
aws logs create-log-group: คือคำสั่งที่ใช้สร้าง log group ใน CloudWatch
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_error_log (กำหนดชื่อ log group ที่เราต้องการ)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs create-log-group --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log"
ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย
จะมีส่วนประกอบของคำสั่งคือ
aws logs put-retention-policy: คือคำสั่งที่ใช้กำหนด retention
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_error_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
--retention-in-days: 30 (กำหนดจำนวนวันที่ต้องการจะให้หมดอายุ)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs put-retention-policy --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log" --retention-in-days 30
ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย
จะมีส่วนประกอบของคำสั่งคือ
aws logs create-log-stream: คือคำสั่งที่ใช้กำหนด retention
--region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
--log-group-name:/chawish-test/var_log_httpd_error_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
--log-stream-name: i-*****************
(ตรงนี้ให้เราใส่ Instance ID ลงไปสามารถดูได้จากหน้า Instance ใน EC2)
เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
aws logs create-log-stream --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log" --log-stream-name i-*****************
เมื่อเรากรอกคำสั่งครบทั้ง 3 อย่างนี้ ให้เราลองเข้าไปดูในส่วนของ Log group ที่อยู่ในหน้า CloudWatch ดูจะเห็นได้ว่าตอนนี้ใน CloudWatch มี log group และ log stream ที่เราได้ส้รางขึ้นมาเรียบร้อยแล้ว
ต่อไปให้เราทำการตั้งค่า config ที่อยู่ในไฟล์ httpd_access_log.conf โดยใช้งานคำสั่งนี้เพื่อเปิดดูข้อมูลไฟล์
vi /etc/awslogs/config/httpd_error_log.conf
จากนั้นให้กดปุ่ม i เพื่อเข้าโหมด insert และทำการใส่ข้อมูลทั้งหมดนี้ลงไป
[/var/log/httpd/error_log]
log_group_name = /chawish-test/var_log_httpd_error_log
log_stream_name = {instance_id}
file = /var/log/httpd/error_log
datetime_format =%Y-%m-%d%H:%M:%S
buffer_duration = 5000
initial_position = start_of_file
time_zone = LOCAL
เมื่อเพิ่มเนื้อหาเสร็จแล้วให้กด esc เพื่อออกจากโหมด insert และพิม :x เพื่อเซฟและออกจากไฟล์
ต่อไปให้ทำการ restart awslog นะครับเพื่ออัพเดทการทำงานของระบบโดยใช้คำสั่ง
systemctl restart awslogsd
สุดท้ายให้เราตรวจสอบความถูกต้องทั้งหมด โดยทำการเช็ค log group ใน CloudWatch ถ้าเราทำตามขั้นตอนถูกต้องจะแสดง log group ทั้งหมด 3 ตัว ได้แก่
สรุป
ผมหวังว่าเนื้อหาในส่วนนี้จะสามารถต่อยอดให้กับผู้ที่สนใจ อยากจะศึกษาและค้นหาวิธีการใช้งาน CloudWatch Log นะครับและขอขอบคุณเนื้อหาอ้างอิงเหล่านี้ครับ
การสร้าง CloudWatch Log เพื่อใช้งานใน EC2 วิธี Install PHP 8.0 and Apache ใน Amazon Linux 2 ของ EC2 What is Amazon CloudWatch Logs?